#include "list.h"
// int main()
// {

//     list<int> l;
//     l.push_back(1);
//     l.push_back(2);
//     l.push_back(3);
//     l.push_back(4);
//     int index(0);
//     //cout << typeid(index).name() << endl;
//     while(cin>> index)
//     {
//         auto pos = find(l.begin(),l.end(),index);
//         if(pos != l.end())
//         {
//             l.splice(l.begin(),l,pos);
//         }
//         for(auto& e : l)
//         {
//             cout << e << " ";
//         }
//         cout << endl;
//     }
//     cout << "程序正常结束!!!" << endl;
//     return 0;
// }

void list_test01()
{
    wanghao::list<int> l;
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    //迭代器
    wanghao::list<int>::iterator it = l.begin();
    while(it != l.end())
    {
        *it = 55;
        cout << *it << " ";
        ++it;
    }
    cout << endl;
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
}
struct Pos
{
    int _row;
    int _col;
    Pos(int row = 0,int col = 0)
        :_row(row)
        ,_col(col)
    {}
};
void pos_test()
{
    Pos p1(2,3);
    wanghao::list<Pos> l;
    l.push_back(p1);
    l.push_back(Pos(4,5));
    l.push_back({6,7});
    wanghao::list<Pos>::iterator it = l.begin();
    cout << typeid(it).name() << endl;
    while(it != l.end())
    {
        //cout << (*it)._row << ":" << (*it)._col << endl;
        //cout << it->_row << ":" << it->_col << endl;
        cout << it.operator->()->_row << ":" << it.operator->()->_col << endl;
        it++;
    }
}
//const迭代器 - 不是本身不能改变,而是指向的内容不能改变
void list_test02()
{
    const wanghao::list<int> l(10,2);
    wanghao::list<int>::const_iterator it = l.begin();
    while(it != l.end())
    {
        cout << *it << " ";
        it++;
    }
    cout << endl;
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
}
void list_test03()
{
    wanghao::list<int> l({1,2,3,4,5});
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
    //指定位置插入
    //l.insert(l.end(),7);
    //指定位置删除
    l.erase(--l.end());
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
}
void list_test04()
{
    wanghao::list<int> l({-1,-2,-3,-4});
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
    // l.push_back(5);
    // l.push_back(6);
    // for(auto& e : l)
    // {
    //     cout << e << " ";
    // }
    // cout << endl;
    // //头插
    // l.push_front(100);
    // l.push_front(200);
    // for(auto& e : l)
    // {
    //     cout << e << " ";
    // }
    // cout << endl;
    //头删
    // l.pop_front();
    // l.pop_front();
    // for(auto& e : l)
    // {
    //     cout << e << " ";
    // }
    // cout << endl;
    //尾删
    l.pop_back();
    l.pop_back();
    for(auto& e : l)
    {
        cout << e << " ";
    }
    cout << endl;
}
//拷贝构造 - 赋值重载
void list_test05()
{
    wanghao::list<int> l1({1,2,3,4});
    wanghao::list<int> l2({5,6,7,8});
    //swap(l1,l2);
    l2 = l1;
    for(auto& e : l1)
    {
        cout << e << " ";
    }
    cout << endl;
    for(auto& e : l2)
    {
        cout << e << " ";
    }
    cout << endl;
}
void list_test06()
{
    wanghao::list<int> l(100,1);
    l.pop_back();
    cout << l.size() << endl;
}
int main()
{
    list_test06();
    //pos_test();
    return 0;
}